home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / XML_CSSML / CSSML / libxslt.php < prev    next >
PHP Script  |  2004-03-24  |  4KB  |  126 lines

  1. <?php
  2. // {{{ license
  3.  
  4. // +----------------------------------------------------------------------+
  5. // | PHP version 4.0                                                      |
  6. // +----------------------------------------------------------------------+
  7. // | Copyright (c) 1997-2002 The PHP Group                                |
  8. // +----------------------------------------------------------------------+
  9. // | This source file is subject to version 2.0 of the PHP license,       |
  10. // | that is bundled with this package in the file LICENSE, and is        |
  11. // | available at through the world-wide-web at                           |
  12. // | http://www.php.net/license/2_02.txt.                                 |
  13. // | If you did not receive a copy of the PHP license and are unable to   |
  14. // | obtain it through the world-wide-web, please send a note to          |
  15. // | license@php.net so we can mail you a copy immediately.               |
  16. // +----------------------------------------------------------------------+
  17. // | Authors: Dan Allen <dan@mojavelinux.com>                             |
  18. // +----------------------------------------------------------------------+
  19.  
  20. // $Id: libxslt.php,v 1.2 2002/05/20 22:08:09 dallen Exp $
  21.  
  22. // }}}
  23. // {{{ description
  24.  
  25. // XML_CSSML is a CSSML to CSS xslt parser
  26.  
  27. // }}}
  28.  
  29. // {{{ class XML_CSSML_domxml
  30.  
  31. /**
  32.  * The XML_CSSML_domxml is a container class which
  33.  * provides the libxslt xsl functions to parse a CSSML 
  34.  * document into a stylesheet with the ability to output 
  35.  * to a file or return
  36.  *
  37.  * @author   Dan Allen <dan@mojavelinux.com>
  38.  * @version  Revision: 0.1
  39.  * @access   public
  40.  * @package  XML_CSSML
  41.  */
  42.  
  43. // }}}
  44. class XML_CSSML_libxslt extends XML_CSSML {
  45.     // {{{ constructor
  46.  
  47.     function XML_CSSML_libxslt($in_CSSML = null, $in_type = 'string', $in_params = null)
  48.     {
  49.         $this->loaded = false;
  50.         if (!is_null($in_CSSML)) {
  51.             $this->load($in_CSSML, $in_type);
  52.         }
  53.  
  54.         if (!is_null($in_params)) {
  55.             $this->setParams($in_params);
  56.         }
  57.  
  58.         $this->stylesheetDoc = domxml_xslt_stylesheet_file(dirname(__FILE__) . '/libxslt.xsl');
  59.     }
  60.  
  61.     // }}}
  62.     // {{{ process()
  63.  
  64.     function process()
  65.     {
  66.         if (parent::isError($process = parent::process())) {
  67.             return $process;
  68.         }
  69.  
  70.         // Prepare the params for passing to the stylesheet
  71.         $params = array(
  72.             'filter'        => $this->filter,
  73.             'browser'       => $this->browser,
  74.             'comment'       => $this->comment,
  75.             'output'        => $this->output,
  76.         );
  77.  
  78.         // Run the transformation and return the result (empty if stream is file)
  79.         $result = $this->stylesheetDoc->process($this->CSSMLDoc, $params);
  80.  
  81.         // If stream is STDOUT then create string and return
  82.         if ($this->output == 'STDOUT') {
  83.             $resultData = $result->document_element();
  84.             $output = $resultData->get_content();
  85.         }
  86.         
  87.         return isset($output) ? $output : true;
  88.     }
  89.  
  90.     // }}}
  91.     // {{{ load()
  92.  
  93.     function load($in_CSSML, $in_type = 'string')
  94.     {
  95.         if (parent::isError($load = parent::load())) {
  96.             return $load;
  97.         }
  98.  
  99.         // If the CSSML data is already a DOM object (can tell by checking for root)
  100.         if ($in_type == 'object' && get_class($in_CSSML) == 'DomDocument') {
  101.             $this->CSSMLDoc = $in_CSSML;
  102.         }
  103.         // If this is a data file, then make it an DOM object with the file function
  104.         elseif ($in_type == 'file' && @file_exists($in_CSSML)) {
  105.             $this->CSSMLDoc = domxml_open_file($in_CSSML);
  106.         }
  107.         // If we were given a string, then make it a DOM object with the string function
  108.         elseif ($in_type == 'string' && is_string($in_CSSML)) {
  109.             $this->CSSMLDoc = domxml_open_mem($in_CSSML);
  110.         }
  111.         // We need to die here because we have no data or it cannot be xml
  112.         else {
  113.             return PEAR::raiseError(null, XML_CSSML_INVALID_DATA, null, E_USER_WARNING, "Request data: $in_CSSML", 'XML_CSSML_Error', true);
  114.         }
  115.  
  116.         if (get_class($this->CSSMLDoc) != 'DomDocument') {
  117.             return PEAR::raiseError(null, XML_CSSML_INVALID_DOCUMENT, null, E_USER_WARNING, "Request data: $in_CSSML", 'XML_CSSML_Error', true);
  118.         }
  119.  
  120.         $this->loaded = true;
  121.     }
  122.  
  123.     // }}}
  124. }
  125. ?>
  126.